爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求

6.21自我总结

一.爬取斗图网

1.摘要

    使用xpath匹配规则查找对应信息文件
    将请求伪装成浏览器
    Referer 防跨域请求

2.爬取代码

#导入模块
import requests

#爬取网址
url = 'http://www.doutula.com/'

#伪装成成浏览器请求
#找到request200,200代表请求成功的里面的内容,按F12里面找
'''
Referer: http://www.doutula.com/  Referer为防跨域请求,我看了下图片都是这个所有也可以不加上去,这个简单来说就是你只能通过这个网址来找到图片,如果他和url不同我们也把他加入再hearders里面,和下面保存一起
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
'''

#编程字典,为了把我们请求伪装成浏览器
hearders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',}

response = requests.get(url,headers=hearders) #hearders是请求头,body是请求主体

#成功拿到响应

#查找的内容
'''
data-original="http://ww4.sinaimg.cn/bmiddle/9150e4e5gy1g48gluqdp6j203c03ct92.jpg" 
'''

#我们用xpath进行查找
#我们去页面找,他对应的xpath
img_xpath = './/img/@data-original'

#解析
from lxml.html import etree
#把爬取的内容变成html格式
html = etree.HTML(response.text) #我们请求下来的内容要以text格式
#把xpath的匹配规则丢进去
img_url = html.xpath(img_xpath)
#print(img_url)

#保存文件
#创建个文件夹
import os

#创建当前文件夹位置一个img文件夹
img_file_path = os.path.join(os.path.dirname(__file__),'img')  #获得文件夹名

if not os.path.exists(img_file_path): #没有文件夹名创建文件夹
    os.mkdir(img_file_path)

#把图片保存进该文件夹
count = 1 #用于计数
for img in img_url:

    img_path = os.path.join(img_file_path,f'第{count}张.jpg')    #创建图片名称

    with open(img_path,'wb') as fw:

        #获取图片的二进制形式
        img_response = requests.get(img)
        img_response = img_response.content

        #写入文件
        fw.write(img_response)
        count +=1
posted @ 2019-06-21 21:06  小小咸鱼YwY  阅读(993)  评论(0编辑  收藏  举报